// SuppoertHangerIterator.h: interface for the SuppoertHangerIterator class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SUPPOERTHANGERITERATOR_H__3D85D80D_5058_48AB_8531_5D8D4AB7D01A__INCLUDED_)
#define AFX_SUPPOERTHANGERITERATOR_H__3D85D80D_5058_48AB_8531_5D8D4AB7D01A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <afxtempl.h>
#include "IterationTemplate.h"
#include "SupportHanger.h"
#include <stack>

class DllExport SupportHangerIterator : public IteratorTemplate<Part*>
{
public:
	SupportHangerIterator(SupportHanger* pSH);
	virtual ~SupportHangerIterator();

public:
	virtual void Begin();
	virtual void Next();
	BOOL IsOver(Part* pPart);

private:
	void ClearOver();
	void FindNoOverNote();

private:
	std::stack<Part*> m_OverStack;
	SupportHanger* m_pSH;
	CMap<void*, void*, Part*, Part*> m_theHaveOvers;
};

#endif // !defined(AFX_SUPPOERTHANGERITERATOR_H__3D85D80D_5058_48AB_8531_5D8D4AB7D01A__INCLUDED_)
